perm filename PUP5.TAL[AP,DBL] blob
sn#104027 filedate 1974-05-30 generic text, type T, neo UTF8
00100 Automatic Programming Group Meeting, Thursday, May 30.
00200
00300
00400
00500
00600
00700
00800
00900
01000
01100
01200
01300 PUP5
01400 Programming-Understanding Program by Doug Lenat
01500
01600
01700
01800
01900
02000
02100
02200 Why existing ideas are insufficient.
02300 The new ideas.
02400 Applying them to a nontrivial task.
02500 The task.
02600 An example.
02700 The implementation.
02800 Results.
02900 Conclusions and Suspicions.
03000
03100
00100 1. Why these won't do Automatic Structured Programming of big programs:
00200 Turing Machines, Production Rules, Markov Algorithms, Resolution
00300 Big, clumsy, slow pgms, difficult to write.
00400 Frames
00500 Putting default values in (when in doubt) leads to bugs.
00600 Templates
00700 How to link them? How to fill them in?
00800 Primitives (and syntactic constraints)
00900 This bottom-up approach is unable to get big programs.
01000 Actors
01100 Too limited access, too little structure ∀ actor.
01200 Demons, Multiple Processes, Alternative Control Contexts,
01300 Alternative Data Contexts, Hypothetical Reasoning
01400 Forcing everything into 1 mechanism leads to poor results.
01500 Heterarchy (the magic word of the seventies)
01600 One must work to get this; it is too general to criticize.
01700 Structured Programming
01800 OK, except no guidance at primitive levels.
01900 Assertions versus Pattern-directed invokation of procedurally
02000 embedded knowledge
02100 Proc. poor for checking predicates
02200 Assertions poor for describing how to execute a sequence
02300 QLISP, PLANNER, CONNIVER, ...
02400 Too slow, use too much core. A vehicle, not a destination.
02500 PW1, Examples-Program, ...
02600 Limited grammar of output pgms makes task manageable
02700 HACKER, PUP1, ...
02800 Pre-analyzing all bugs; pgmming by subgoaling and debugging
02900 Hoare, Dijkstra, Floyd, ...
03000 OK, but 1 billion substandard modules produced ∀ of these.
03100
03200
03300 2. Take the best of each of these, add pieces of new ideas, shake well.
03400 System Organization
03500 Idea 1: Use the best parts of all the best old ideas
03600 examples
03700 Idea 2: Let each being have and use knowledge of being structure
03800 The assumption
03900 Examples
04000 Idea 3: Being X can not only do X, but can write new, similar beings
04100 Examples
04200 Idea 4: Debugging is a consequence of human memory limitations
04300 examples
04400 Idea 5: Programmers should defer each decision as long as possible
04500 examples
04600 Benefits hoped for
04700
00100 3. Pick a nontrivial programming problem, and try to do it using the ideas.
00200
00300 The Task: Write CF, a miniature version of JUMBO, a miniature
00400 version of Winston's Concept Formation program
00500 Diagram of what PUP5 does; diagram of what CF must do.
00600 An example: "Scene E is incompatible with some feature of the model scene G"
00700 How a human handles this
00800 How PUP5 handles this
00900 Implementation: The organization of the PUP5 system
01000 Amount of problem-specific info, and an example
01100 Amount of programming knowledge, and an example
01200 Excruciatingly comprehensive explication of the knowledge needed to
01300 write concept formation programs
01400 How PUP5's beings were actually decided on: Protocol
01500 Confessions: Kludges, Direct function calls, Functions,
01600 Natural Language Front End, Elegance vs Efficiency
01700 Program parameters: Size, Core, Time, Complexity
01800 Results
01900 What went in (user-PUP5 dialog)
02000 What came out (the final CF program it produced)
02100 Efficiency, Style, Length;
02200 Surprise: CF, too, understands what it's doing!!
02300 What else could come out (now; with a little coaxing; never)
02400 Is the CF program really stored somewhere inside PUP5?
02500 somewhere inside the user?
02600
02700
02800 4. Conclusions
02900 Was it worth 8 months? Was it worth this one talk?
03000 Was it the right way to solve the problem? Was it the right problem?
03100 Future work:
03200 summer: several more programs turned out, more faithful to the ideas
03300 theory: what kinds of programs is it well {poorly} suited to?
03400 destiny: what will happen to the ideas? did they ever really exist?
03500 cooordination with other systems: ease, utility, who's in control?
00100 PUP5
00200
00300 User CF
00400 (dialogue) program
00500
00600
00700
00800
00900 Scenes Model network ∀ scene name
01000 CF
01100 Scene Names Guess for scene name (if not supplied)
01200
01300
01400
01500 PROGRAM LENGTH OUTPUT PGMS CPU TIME MIN/LINE LENGTH/OUTPUT EFFORT
01600
01700 PW1 20 pp 3-5 lines 3 min .6 4 3 mos.
01800 EXAMPLES 20 pp 4-5 lines 2 min .4 4 6 mos.
01900 PUP1 60 pp 3-15 lines 10 min .7 4 4 mos.
02000 HACKER 60 pp 4-20 lines 10 min .5 3 12 mos.
02100 PUP5 100 pp 500-2000 lines 3000 min 1.5 0.05 8 mos.
02200
02300
02400
02500 The set of questions each being answers (the set of being parts) is:
02600 IDEN IMPLICIT:ARGS EXPLICIT:ARGS EXPLICIT:ARGS:CHECK NLAMBDA
02700 NON:EVAL:ARGS WHAT HOW WHY SPEC:WHY MAIN:EFFECTS MINOR:EFFECTS
02800 WHEN META:CODE COMMENTS PREREQUISITES COREQUISITES DEMONS
02900 POSTREQUISITES AFFECTS COMPLEXITY:VECTOR GENERALIZATIONS
03000 SPECIALIZATIONS ALTERNATIVES PREDICATE DATA:STRUCTURE
03100 ENCODABLE INHIBIT:CURRENT:DEMONS FORM:CHANGING